/*  
  * Map对象，实现Map功能  
  * size() 获取Map元素个数  
  * isEmpty() 判断Map是否为空  
  * clear() 删除Map所有元素  
  * put(key, value) 向Map中增加元素（key, value)   
  * remove(key) 删除指定key的元素，成功返回true，失败返回false  
  * get(key) 获取指定key的元素值value，失败返回null  
  * element(index) 获取指定索引的元素（使用element.key，element.value获取key和value），失败返回null  
  * containsKey(key) 判断Map中是否含有指定key的元素  
  * containsValue(value) 判断Map中是否含有指定value的元素  
  * keys() 获取Map中所有key的数组（array）  
  * values() 获取Map中所有value的数组（array）  
  *  
  */ 
function Map() {  
        this.elements = new Array();  
    
        //获取Map元素个数  
        this.size = function () {  
                return this.elements.length;  
        },  
    
                //判断Map是否为空  
                this.isEmpty = function () {  
                        return (this.elements.length < 1);  
                },  
    
                //删除Map所有元素  
                this.clear = function () {  
                        this.elements = new Array();  
                },  
    
                //向Map中增加元素（key, value)   
                this.put = function (_key, _value) {  
                        if (this.containsKey(_key) === true) {  
                                if (this.containsValue(_value)) {  
                                        if (this.remove(_key) === true) {  
                                                this.elements.push({  
                                                        key: _key,  
                                                        value: _value  
                                                });  
                                        }  
                                } else {  
                                        this.elements.push({  
                                                key: _key,  
                                                value: _value  
                                        });  
                                }  
                        } else {  
                                this.elements.push({  
                                        key: _key,  
                                        value: _value  
                                });  
                        }  
                },  
    
                //删除指定key的元素，成功返回true，失败返回false  
                this.remove = function (_key) {  
                        var bln = false;  
                        try {    
                                for (i = 0; i < this.elements.length; i++) {    
                                        if (this.elements[i].key === _key) {  
                                                this.elements.splice(i, 1);  
                                                return true;  
                                        }  
                                }  
                        } catch (e) {  
                                bln = false;    
                        }  
                        return bln;  
                },  
    
                //获取指定key的元素值value，失败返回null  
                this.get = function (_key) {  
                        try {    
                                for (i = 0; i < this.elements.length; i++) {  
                                        if (this.elements[i].key === _key) {  
                                                return this.elements[i].value;  
                                        }  
                                }  
                        } catch (e) {  
                                return null;    
                        }  
                },  
    
                //获取指定索引的元素（使用element.key，element.value获取key和value），失败返回null  
                this.element = function (_index) {  
                        if (_index < 0 || _index >= this.elements.length) {  
                                return null;  
                        }  
                        return this.elements[_index];  
                },  
    
                //判断Map中是否含有指定key的元素  
                this.containsKey = function (_key) {  
                        var bln = false;  
                        try {  
                                for (i = 0; i < this.elements.length; i++) {    
                                        if (this.elements[i].key === _key) {  
                                                bln = true;  
                                        }  
                                }  
                        } catch (e) {  
                                bln = false;    
                        }  
                        return bln;  
                },  
      
                //判断Map中是否含有指定value的元素  
                this.containsValue = function (_value) {  
                        var bln = false;  
                        try {  
                                for (i = 0; i < this.elements.length; i++) {    
                                        if (this.elements[i].value === _value) {  
                                                bln = true;  
                                        }  
                                }  
                        } catch (e) {  
                                bln = false;    
                        }  
                        return bln;  
                },  
    
                //获取Map中所有key的数组（array）  
                this.keys = function () {  
                        var arr = new Array();  
                        for (i = 0; i < this.elements.length; i++) {    
                                arr.push(this.elements[i].key);  
                        }  
                        return arr;  
                },  
   
                //获取Map中所有value的数组（array）  
                this.values = function () {  
                        var arr = new Array();  
                        for (i = 0; i < this.elements.length; i++) {    
                                arr.push(this.elements[i].value);  
                        }  
                        return arr;  
                };  
}  